信号处理、配置、识别、诊断

使用的角度来看, LIN 提供四项功能——信号处理、配置、识别和诊断,这四项功能共同构成了 LIN 的应用层。传输层是配置、识别和诊断这三项功能的通信载体,实现应用层消息与帧之间的格式转换和传输。为了规范使用, LIN 为应用层和传输层定义了 API 接口。

传输层

传输层的任务单一,就是充当一个“翻译官”,把来自诊断服务的消息(Message)“翻译”成协议层可以处理的PDU (Packet Data Unit,分组数据单元),或者反过来,把协议层收到的 PDU“翻译”成诊断服务需要的消息。消息到 PDU 的转换过程称为拆分(Packing), PDU 到消息的转换过程称为重组(Unpacking)。 PDU 对应着帧结构的数据段,并通过诊断帧发送或接收。

PDU 结构

为满足汽车行业的要求,LIN 传输层 PDU 的格式与 ISO 制定的基于 CAN 网络的诊断标准(参照参考资料[9])
非常相似(是 ISO 标准的子集)。这种兼容性大大减少了在 CAN 和 LIN 之间转换数据格式的工作量, 降低了对节
点计算能力的要求。

从发送格式上, PDU 单元可分为单帧(Single Frame, SF)、首帧(First Frame, FF)和续帧(Consecutive Frames,CF)三种。从发送源上,主机发送请求 PDU,从机发送应答 PDU。

PDU 格式,包括节点地址(NAD),协议控制信息(PCI),LEN,服务 ID(SID),应答服务 ID(RSID),消息字节段(D1~D6)。首字节 NAD 首先发送,末字节 D4,D5,D6 最后发送。

传输层通信

应用层发出的消息如果长度不超过单帧的容量,传输层会按单帧的格式交给协议层发送。传输层收到的单帧也会直接作为消息送往应用层;如果消息长度超过单帧的容量,传输层先要把消息拆分成首帧和续帧并排好次序,然后再交给协议层依次发送。反过来,协议层收到的首帧和续帧,传输层先要按照接收次序将其重组为消息,最后交给应用层处理。

LIN 传输层只能按顺序接收续帧。
LIN 传输层具备出错重传功能。
传输层由传输层 API 完成

操作 传输层 API
发一个 PDU ld_put_raw
收一个 PDU ld_get_raw
发一个消息 ld_send_message
收一个消息 ld_receive_message

LIN应用层

概述

LIN 应用层提供信号处理、配置、识别和诊断四项功能。配置、识别和诊断功能又包含若干项目,称为服务(Service)。为了区别,每项服务都有固定、唯一的服务代号(Service ID, SID)。

LIN 应用层的配置、识别和诊断都是针对逻辑节点(Logical Node)的。逻辑节点是能够对来自主机节点和/或诊断设备的服务请求作出响应的功能实体。为了区别不同的逻辑节点, LIN 定义了NAD (Node Address forDiagnose,诊断地址)。第 1 章介绍了物理节点(Physical Node)、从机任务和接口(Interface)的概念。对于一个物理节点来说,从机任务和接口对应着实现帧收发的软件和硬件实体,而逻辑节点则代表了配置、识别和诊断方面的能力。物理节点、从机任务以及接口是一一对应的,但是物理节点可以包括 1 个或者多个逻辑节点。

信号处理功能

信号处理功能是指应用层可以不经过传输层,直接从协议层获取或修改网络中的信号。 这些信号由NCF(Node Capability File,节点性能文件)定义,既可以是工作参数(例如温度、压力的测量值、继电器的开合状态等),也可以是状态标志(例如某信号携带帧的收发状态)。

信号携带帧在 LIN 网络的节点之间传递,每个节点既可以是信号的发布者,也可以是信号的收听者。信号处理功能由核心 API 完成.

操作 核心 API
信号读写 l_bool_rd/l_bool_wr
信号读写 l_u8_rd/l_u8_wr
信号读写 l_u16_rd/l_u16_wr
信号读写 l_bytes_rd/l_bytes_wr
读标志,清除标志 l_flg_tst
读标志,清除标志 l_flg_clr

配置功能

LIN 规范规定,每个逻辑节点都应该有 NAD。在网络运行期间,任意两个逻辑节点的 NAD 都必须不同,否则就会产生冲突。此外,每个逻辑节点都要能处理带有某些 PID 的帧。由此可见, NAD 和 PID 分别与逻辑节点建立了一种映射关系, LIN 规范把 NAD 和 PID 的这样一种组合称为逻辑节点的配置项(Configuration)。一个逻辑节点可以有一个以上的配置项,但在网络运行期间,每个逻辑节点只能有一个配置项有效。

配置功能是指 LIN 的主机节点能自动地给所有逻辑节点选择配置项,消除 NAD 和 PID 分配中存在的冲突,使网络正常工作。配置功能是确保各节点协调运作的内部功能,包含分配 NAD、分配 PID 等服务。配置功能通过传输层完成配置服务。

为了适应汽车行业的需要, LIN 规范定义配置功能的服务时,参照了 ISO 制定的 UDS(Unified DiagnosticServices,车辆统一诊断服务)标准(参照参考资料[7])和 OBD(On-board Diagnostic,车载自动诊断)标准(参照参考资料[9])。配置功能各项服务及其 SID 都是 ISO 标准的子集。

配置功能的工作模型与计算机局域网的“客户机-服务器”模型很相似,如图 5.4 所示。主机节点可以被视为客户机,逻辑节点被视为服务器。客户机首先向服务器发出服务请求,服务器依照请求执行操作,然后向客户机返回应答。

节点存储模型
从机节点 NAD 配置
从机节点 PID 配置

识别功能

识别功能是指主机节点能够获取逻辑节点的信息,例如产品代号等。借助识别功能,主机节点和逻辑节点还可以实现一些自定义的操作。识别功能与上面介绍的配置功能使用同样的工作模型,识别功能由识别 API 完成。

服务名称 用途 识别与配置 API
Read by identifier 读取逻辑节点的信息,或者实现自定义的操作。 ld_read_by_id、ld_read_by_id_callout

诊断功能

诊断功能是指 LIN 网络之外的诊断设备可以直接连接 LIN 的主机节点,或者通过外部的其它网络(例如ISO11898 定义的 CAN 网络,参照参考资料[8])连接主机节点,连接后,诊断设备可以按规定的诊断协议(例如ISO15765 规范,参照参考资料[9])与 LIN 的逻辑节点通讯。与配置功能相比,诊断功能是 LIN 网络作为一个整体对外呈现的可配置、可访问的属性。

为了适应汽车行业的需要, LIN 规范定义诊断服务时,参照了 ISO 制定的 UDS 标准(参照参考资料[7])和OBD 标准(参照参考资料[9])。 LIN 诊断功能是以上两个标准的子集,相同服务的 SID 也相同。

诊断功能的工作模型如图 5.7 所示,它是配置功能工作模型的扩展。主机节点在此扮演了一个“网关”的角
色,在诊断设备和 LIN 网络之间传递服务请求和应答。

诊断功能的实用意义可以用一个例子来说明:假设采用 LIN 子网的车门连接在底盘 CAN 网络上,诊断车门故障时,只需要把 OBD 设备连接于车载计算机的 CAN 接口即可,而不需要拆下车门;确定车门故障点后,拆下车门维修完毕,只需把 OBD 设备连接于车门的 CAN 接口,就能确认门是否已被修好,而不需要事先把车
门装回。

一般而言,节点的计算能力与成本成正比。应用层的四项功能中,只有诊断功能可以根据具体产品而灵活
裁减,其余的功能都是固定而且必须的。

诊断功能的可裁减性体现在两方面:实现方式以及支持的服务种类,这些都是直接影响着节点计算负荷的
因素。

诊断方式
LIN 网络有三种方式来实现诊断功能,它们的差别在于传输层的复杂度,因为拆分/重组需要一定的计算量。

诊断方式 方式 A 方式 B 方式 C
传输层 支持 SF/FF/CF 视设计而定
协议层 信号携带帧 诊断帧 诊断帧(使用自定义 NAD)
计算量 最小 视设计而定
可移植性

诊断类型(Diagnostic Class)

逻辑节点功能越复杂,支持的服务越多,对逻辑节点的计算能力要求就越高。
依据诊断服务的数量, LIN 规范划分出三种不同的诊断类型——I 类、 II 类和 III 类,适用于不同条件的逻
辑节点。 I 类最低, III 类最高,较高类型完全包含较低类型的功能

  • I 类是所有诊断类型的公共部分,提供信号处理、识别、配置功能,诊断功能采用表 5.12 中的方式 A,这
    也是每个逻辑节点必备的服务。

  • II 类节点增加了 UDS 定义的识别服务(注 1),诊断方式一般采用表中的方式 B。

  • III 类节点相比 II 类节点,又增加了 UDS 定义的部分其它服务,此外,还增加了通过 LIN 总线在线升级
    的功能。